package com.shure.surdes.modules.survey.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.shure.surdes.modules.survey.domain.Survey;
import com.shure.surdes.modules.survey.query.SurveyQuery;
import com.shure.surdes.modules.survey.vo.SurveyVo;

/**
 * 问卷Service接口
 *
 * @author Shure
 * @date 2021-10-18
 */
public interface ISurveyService extends IService<Survey> {

    /**
     * 批量永久删除问卷
     *
     * @param surveyIds 需要删除的问卷主键集合
     * @return 结果
     */
    public int deleteSurveyBySurveyIds(Long[] surveyIds);

    /**
     * 永久删除问卷信息
     *
     * @param surveyId 问卷主键
     * @return 结果
     */
    public int deleteSurveyBySurveyId(Long surveyId);

    /**
     * 删除问卷信息
     *
     * @param surveyId 问卷主键
     * @return 结果
     */
    public int removeSurveyBySurveyId(Long surveyId);

    /**
     * 批量删除问卷
     *
     * @param surveyIds 需要删除的问卷主键集合
     * @return 结果
     */
    public int removeSurveyBySurveyIds(Long[] surveyIds);


    /**
     * 批量发布问卷
     *
     * @param surveyIds 需要发布的问卷主键集合
     * @return 结果
     */
    public int publishSurveyBySurveyIds(Long[] surveyIds);

    /**
     * 批量还原问卷
     *
     * @param surveyIds 需要发布的问卷主键集合
     * @return 结果
     */
    public int restoreSurveyBySurveyIds(Long[] surveyIds);

    /**
     * 撤销发布问卷
     *
     * @param surveyId 需要发布的问卷主键
     * @return 结果
     */
    public int revokeSurveyBySurveyId(Long surveyId);

    /**
     * 复制问卷
     *
     * @param surveyId
     * @return
     */
    Long copySurveyBySurveyId(Long surveyId);

    /**
     * 从模板复制问卷
     *
     * @param survey
     * @return
     */
    Long saveByTemplate(Survey survey);

    Page<SurveyVo> analysisList(Page page, SurveyQuery query);
}
